const express = require('express');
const app = express();

app.use(express.static('root'));
app.use(express.urlencoded({extended:true}));

// const { index_recommendList } = require('./root/data/index-recommend');
const pcDouBan = require('./root/data/pc-movie-douban-data');

// 正在热映
app.post('/postScreeningList',(request,response)=>{
    response.status(200).json(pcDouBan.screeningList);
})
// 最近热门电影
app.post('/postHotMovie',(request,response)=>{
    response.status(200).json(pcDouBan.hotMovie);
})
// 最近热门电视剧
app.post('/postHotTV',(request,response)=>{
    response.status(200).json(pcDouBan.hotMovie);
})
// 热门推荐
app.post('/postHotGallery',(request,response)=>{
    response.status(200).json(pcDouBan.hotGallery);
})
// 最受欢迎的影评
app.post('/postPopularReviews',(request,response)=>{
    response.status(200).json(pcDouBan.popularReviews);
})



// 移动端
const userList = require('./root/data/user').userList;
const indexRecommendList = require('./root/data/index-recommend').index_recommendList;    // 首页推荐
const movieRecommend = require('./root/data/movie-info-simple');                          // 电影信息 简单
const movieInfoDetail = require('./root/data/movie-info-detail.json');                    // 电影信息 详细
const movieReviewsDiscuss = require('./root/data/movie-reviews-discuss');                 // 电影短评、影评、讨论
const productsInfo = require('./root/data/products-info').productsInfo;                   // 商品信息
const myCartList = require('./root/data/user').myCartList;                                // 我的购物车

var session_user = {};    // 用于存储用户信息
var myCart = [];
// 验证当前是否有用户登录
app.post('/postUserSession',(request,response)=>{
    console.log(JSON.stringify(session_user) !== "{}");
    if(JSON.stringify(session_user) !== "{}"){
        response.json({
            status:true,
            msg:session_user
        });
    }
    else{
        response.json({
            status:false,
            msg:'未登录'
        });
    }
    // 获取该用户的购物车
    myCart = myCartList.filter(function(item){
        return item.userId = session_user.id;
    })[0];
    
});

// app-登录注册页
// 验证登录
app.post('/login',(request,response)=>{
    console.log(request.body);
    var username = request.body.username;
    var password = request.body.password;
    let success = false,msg = '用户名和密码不匹配';

    for(var i = 0; i<userList.length; i++){
        var item = userList[i];
        if(item.phone == username || item.email == username){
            console.log('用户名对应的手机号或邮箱存在');
            if(item.password == password){
                console.log('密码正确');
                session_user = item;
                msg = '密码正确，登录成功'
                success = true;
            }
            else{
                console.log('密码错误');
            }
        }
        else{
            console.log('用户名对应的手机号或邮箱不存在');
        }
    }
    console.log(session_user);
    response.json({
        status:success,
        msg:msg
    });
});
// 注册
app.post('/register',(request,response)=>{
    console.log(request.body);
    var username = request.body.username;
    let success = false,msg = '用户名和密码不匹配';

    var user = userList.filter(function(item){
        return item.phone == username;
    })

    console.log(user);
    console.log(JSON.stringify(user) === "[]");
    if(JSON.stringify(user) === "[]"){
        var id = parseInt(userList[userList.length-1].id) + 1;
        console.log(id);
        user = {
            id:id,
            phone:username,
            email:'',
            password:'',
            avatar:'./img/avatar.jpg',
            nickname:username,
        };
        userList.push(user);
        success = true;
        msg = '注册成功';
        console.log(userList);
        session_user = user;
    }
    else{
        success = true;
        msg = '登录成功';
        session_user = user[0];
    }
    console.log('session_user',session_user);
    response.json({
        status:success,
        msg:msg
    });
});
// 退出登录
app.post('/logout',(request,response)=>{
    session_user = {};
    console.log('log out session_user',session_user);
    response.json({
        status:true,
        msg:'登出成功'
    })
});



// app-首页推荐
// 获取首页推荐列表
app.post('/postIndexRecommendList',(request,response)=>{
    response.status(200).json(indexRecommendList);
})


// app-书影音
// 获取 影院热映 的 电影信息
app.post('/postMovieCinemaHit',(request,response)=>{
    response.status(200).json(movieRecommend.MovieCinemaHit);;
})
// 获取 豆瓣热门 的 电影信息
app.post('/postMovieDouBanHot',(request,response)=>{
    response.status(200).json(movieRecommend.MovieDouBanHot);;
})
// 获取 所有电影信息
app.get('/getAllMovie',(request,response)=>{
    response.status(200).json(movieInfoDetail);
})




// app-电影详情页 
// 电影 详细信息 根据电影id获取电影详细信息
app.get('/getMovieDetail',(request,response)=>{
    let doubanId = request.query.doubanId;
    let movieDetail = movieInfoDetail.filter((item)=>{
        return item.doubanId == doubanId;
    })
    if(movieDetail.length == 1){
        response.status(200).json({
            msg:true,
            data:movieDetail[0]
        })
    }
    else{
        response.status(200).json({
            msg:false
        })
    }
})
// 电影 短评 获取短评信息
app.get('/getShortComments',(request,response)=>{
    let doubanId = request.query.doubanId;
    let short_comments = movieReviewsDiscuss.ShortComments.filter((item)=>{
        return item.doubanId == doubanId;
    })
    if(short_comments.length == 1){
        response.status(200).json({
            msg:true,
            data:short_comments[0]
        })
    }
    else{
        response.status(200).json({
            msg:false
        })
    }
})

// 电影-影评 获取影评信息
app.get('/getFilmReviews',(request,response)=>{
    let doubanId = request.query.doubanId;
    let film_reviews = movieReviewsDiscuss.FilmReviews.filter((item)=>{
        return item.doubanId == doubanId;
    })
    if(film_reviews.length == 1){
        response.status(200).json({
            msg:true,
            data:film_reviews[0]
        })
    }
    else{
        response.status(200).json({
            msg:false
        })
    }
})

// 电影-讨论 获取讨论信息
app.get('/getFilmDiscusses',(request,response)=>{
    let doubanId = request.query.doubanId;
    let film_discusses = movieReviewsDiscuss.FilmDiscusses.filter((item)=>{
        return item.doubanId == doubanId;
    })
    if(film_discusses.length == 1){
        response.status(200).json({
            msg:true,
            data:film_discusses[0]
        })
    }
    else{
        response.status(200).json({
            msg:false
        })
    }
})




// app-商城页
// 获取豆小铺的商品  只取前4个
app.get('/getDouShopProductData',(request,response)=>{
    var type = request.query.type;    // 类型

    var arr = productsInfo.filter(function(item){   // 获取所有元素
        return item.typeName == type;
    });

    var dataList = arr[0].product.slice().splice(0,4);

    response.status(200).json(dataList);
})

// 获取指定类型的商品
app.get('/getProductData',(request,response)=>{
    var type = request.query.type;    // 类型
    var num = request.query.num;      // 需要查找的个数

    var dataList = [];
    if(type == 'all'){
        // 所有的数据
        var arr = [];
        for(var i = 0; i<productsInfo.length; i++){
            var product = productsInfo[i].product;
            product.forEach((item)=>{
                arr.push(item);
            })
        }

        isNumLimited(arr);
        
    }
    else{
        // 过滤数组
        var arr = productsInfo.filter(function(item){
            return item.typeName == type;
        })[0].product;
        
        isNumLimited(arr);
    }

    function isNumLimited(arr){
        // 没有限制个数的话，就将所有数据进行乱序重排，在传递数据
        // 有过有限制个数，则随机一个数据，push进新数组
        if(num == ''){
            dataList = arr.slice().sort(function(){        // 数组乱序重排
                return Math.random() - 0.5;
            });
            response.status(200).json(dataList);
        }
        else{
            for(var i = 0; i<num; i++){
                var index = Math.floor(Math.random() * (arr.length - 0) + 0);
                dataList.push(arr[index]);
            }
            response.status(200).json(dataList);
        }
    }
})

// 获取指定id的商品
app.get('/getProductDetail',(request,response)=>{
    var productId = request.query.product_id;
    console.log(productId);

    var product = {};
    for(var i = 0; i<productsInfo.length; i++){
        var oneTypeProduct = productsInfo[i].product;
        for(var j = 0; j<oneTypeProduct.length; j++){
            var item = oneTypeProduct[j];
            if(item.productId == productId){
                product = item;
                break;
            }
        }
    }
    console.log('product',product);
    response.status(200).json(product);
})

// 添加数据到我的购物车
app.post('/postProductToMyCart',(request,response)=>{
    var userId = session_user.id;
    console.log('before push myCart',myCart)
    var cart = myCart.cart;
    console.log('myCart',cart,myCart.cart.length);

    var productItem = request.body;
    console.log('productItem',productItem);

    var productCartId = productItem.productCartId;
    var myCart_findProduct = cart.filter(function(item){
        return item.productCartId == productCartId;
    });
    if(myCart_findProduct.length != 0){
        myCart_findProduct[0].quantity = Number(myCart_findProduct[0].quantity) + Number(productItem.quantity);
        console.log(myCart_findProduct[0].quantity);
        console.log('update myCart',cart,myCart.cart.length);
        response.status(200).json({
            status:true,
            msg:'更新成功'
        })
    }
    else{
        cart.push(productItem);
        console.log('push myCart',cart,myCart.cart.length);
        response.status(200).json({
            status:true,
            msg:'添加成功'
        })
    }
})

// 获取指定id的购物车
app.get('/getMyCart',(request,response)=>{
    console.log(myCart);
    if(JSON.stringify(myCart) !== "{}"){
        response.status(200).json({
            status:true,
            data:myCart,
            msg:'获取购物车成功'
        })
    }
    else{
        response.status(200).json({
            status:false,
            data:'',
            msg:'购物车为空'
        })
    }
})

// 删除指定id的购物车
app.post('/deleteMyCart',(request,response)=>{
    var productCartId = request.body.productCartId;
    console.log(myCart);
    var cart = myCart.cart;
    console.log('cart',cart);
    myCart.cart.forEach((item,index)=>{
        if(item.productCartId == productCartId){
            myCart.cart.splice(index,1);
        }
    })
    console.log(myCart,myCart.cart.length);
    response.status(200).json({
        status:true,
        msg:'删除成功'
    })
})

app.listen('3000',function(){
    // console.log('server running http://localhost:3000/pc-movie-douban.html');
    console.log('server running http://localhost:3000/index.html');
})